perm filename SCHED[1,JRA]1 blob sn#539525 filedate 1980-10-06 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		Part one: Functions as passive objects
C00005 00003	The point  of  the  course  is  to  present  the  fundamental  notions  of
C00009 ENDMK
CāŠ—;
	Part one: Functions as passive objects

1  Notation
 	The role of notation in science
	 expressivity
	 subordination of detail
	 economy
	 amenability to proof
	The impact of computing on notation
	 executability
	 representability of algorithms
	The difficulties with programming languages
2  The language
	Data structures 
	 the representability of programs
	 abstract objects
	Algorithmic notation
	 constructors, selectors, and recognizers
	 conditional expressions
	 definitions
	The mapping of expressions to data structures
3  Examples
	Numeric examples
	Non-numeric computation
4  Evaluation
5	Deduction vs computation
	 systems for substitution and simplification
	 computation as controlled deduction
	 call-by-name vs. call-by-value
	Semantics of programming languages
	Representability of programs
	 a detailed discussion
	An evaluation algorithm
	 The operational view
	Implementation strategies
	 call-by-value
	 weak vs. strong conditional
	 simulation of substitution
6  Control: function vs algorithm
	an analysis of the evaluator
7  Applicative v.s. imperative
	control as a programming tool
	 side-effects
8  Property-lists and message passing
	classes as properties
	algorithms as message passing
9  Object-oriented programming
10	Smalltalk and Actors
11 Lexical vs dynamic scoping
	Evaluation revisited
	 variables: local, free, global
12 Machines and compiling
13	The LISP machine
	Traditional machines as microcode
	Compilation
	 binding strategies


	Part two: Functions as active objects

14 Functions as first-class objects
15 Applications of functional objects
16 Evaluation of Functionals
17 The impact of scoping
18
19
20
21
22
The point  of  the  course  is  to  present  the  fundamental  notions  of
computing.

The course has the same general  characteristic as that of the  functional
programming  class,  but  will  use  a  curriculum  based  on  access   to
interactive personal computers  as the  primary tool  for gaining  fluency
with the concepts and gaining an understanding of interactive computing.

The notions of computing are  quite simple, yet the contemporary  approach
tends to obfuscate rather than  illuminate.  At the concept level,  simple
ideas become buried in syntax:   algorithms are confused with  programming
language syntax; computation is confused compiling; compiling is  confused
with syntax analysis.

On the technological side, the Practice of computing suffers from the dead
weight of twenty years of batch processing.  "Glass teletypes" create card
decks and text  editors manipulate  card images.  Alas, certain  computing
"methodologies"  even  glory  in  the  "discipline"  that  such  primitive
interaction forces one to endure.


Without an understanding  of fundamental  concepts, and  saddled with  the
outdated and  stilted programming  techniques, it  is not  suprising  that
computer-related productivity is falling.


Fortunately, the intellectual legacy of mathematical logic and be  coupled
with a few insights of modern  computing to supply an adequate  foundation
for modern computing.  The missing ingredient  in the traditional  setting
was the baroque computing engine that logicians used; a Turing machine  is
a dreadful  architecture.  The  fundamentals of  the  new  formalism  were
discussed by John McCarthy  twenty years ago, and  have been the basis  of
the programming language named LISP. The new ingredient is the development
of the personal computing environment.  One cannot effectively learn about
computing without practicing  the art. Until  recently, appropriate  tools
for computing "practice" have  been restricted to research  establishments
fr at  least  two  reasons.  First, many  of  the  ideas  about  effective
interactive environments have been the subject of research; secondly,  and
more immediate, the cost of these components has been extraordinally high.
Technology has changed  that second cosideration,  and the research  ideas
have reached a  systhesis stage. The  time is therefore  ripe to move  the
intellectual  and  methodological  and  technological  results  into   the
educational domain.  That is the intent of this course.